.\" Copyright (C) 2022 Jens Axboe <axboe@kernel.dk>
.\"
.\" SPDX-License-Identifier: LGPL-2.0-or-later
.\"
.TH io_uring_register_sync_cancel 3 "September 21, 2022" "liburing-2.3" "liburing Manual"
.SH NAME
io_uring_register_sync_cancel \- issue a synchronous cancelation request
.SH SYNOPSIS
.nf
.B #include <liburing.h>
.PP
.BI "int io_uring_register_sync_cancel(struct io_uring *" ring ",
.BI "                                  struct io_uring_sync_cancel_reg *" reg ");
.PP
.SH DESCRIPTION
.PP
The
.BR io_uring_register_sync_cancel (3)
function performs a synchronous cancelation request based on the parameters
specified in
.I reg .

The
.I reg
argument must be filled in with the appropriate information for the
cancelation request. It looks as follows:
.PP
.in +4n
.EX
struct io_uring_sync_cancel_reg {
    __u64 addr;
    __s32 fd;
    __u32 flags;
    struct __kernel_timespec timeout;
    __u8 opcode;
    __u8 pad[7];
    __u64 pad2[3];
};
.EE
.in
.PP

The arguments largely mirror what the async prep functions support, see
.BR io_uring_prep_cancel (3)
for details. Similarly, the return value is the same. The exception is the
.I timeout
argument, which can be used to limit the time that the kernel will wait for
cancelations to be successful. If the
.I tv_sec
and
.I tv_nsec
values are set to anything but
.B -1UL ,
then they indicate a relative timeout upon which cancelations should be
completed by.

The
.I pad
values must be zero filled.

.SH RETURN VALUE
See
.BR io_uring_prep_cancel (3)
for details on the return value. If
.I timeout
is set to indicate a timeout, then
.B -ETIME
will be returned if exceeded. If an unknown value is set in the request,
or if the pad values are not cleared to zero, then
.I -EINVAL
is returned.
.SH SEE ALSO
.BR io_uring_prep_cancel (3)
